home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / demos / r-z / twistdemo / aminet / extractaminetarchive < prev    next >
Text File  |  1995-03-21  |  3KB  |  180 lines

  1. /**
  2.  * $Id$
  3.  *
  4.  * Extract Aminet archives
  5.  *
  6.  * Copyright © 1995 HiSoft. All Rights Reserved.
  7. **/
  8. ADDLIB('rexxsupport.library',0,-30,0)
  9.  
  10. OPTIONS RESULTS
  11.  
  12. ADDRESS Twist
  13. PARSE ARG dbfilename,rela_x,rela_y,shiftkeys
  14. OPEN dbfilename
  15.  
  16. DBLENGTH = LENGTH(dbfilename)
  17.  
  18. do n = 1 to DBLENGTH by 1
  19. X = right(dbfilename,n)
  20. Y = Substr(X,1,1)
  21. IF Y = "/" then do
  22. VIEWERLOCATION = left(dbfilename,DBLENGTH-n) || '/Viewer.DB'
  23. n = DBLENGTH
  24. END
  25. end
  26.  
  27. GETDBFORMMODE
  28.  
  29. GETDBFORMFIELD "Archivefield"
  30. ARCHIVE = result
  31.  
  32. GETDBFORMFIELD "FileName"
  33. ARCHIVENAME = result
  34.  
  35. ARCLENGTH = LENGTH(ARCHIVE)
  36.  
  37. FILETYPE = SUBSTR(ARCHIVE, (ARCLENGTH-2), 3)
  38. FILETYPE = UPPER(FILETYPE)
  39.  
  40. IF exists('ENV:all') = 1 then do
  41.  
  42. DELETE('ENV:all')
  43.  
  44. END
  45.  
  46.  
  47. CALL CLEANENV
  48.  
  49. IF FILETYPE = "ARC" | FILETYPE = "LZH" | FILETYPE = "LHA" then do 
  50.  
  51. ADDRESS COMMAND 'setenv all `echo a`'
  52. ADDRESS COMMAND 'setenv drawer `RequestFile RAM: TITLE="Select a drawer to extract the ' || ARCHIVENAME || ' to." DRAWERSONLY`'
  53.  
  54. CALL TESTFORFILES
  55.  
  56. ADDRESS COMMAND 'lha x "' || ARCHIVE || '" `type ENV:drawer` >CON: <env:all'
  57. DELETE('ENV:drawer')
  58. DELETE('ENV:all')
  59. EXIT
  60. End
  61.  
  62. IF FILETYPE = "LZX" then do 
  63.  
  64. ADDRESS COMMAND 'setenv all `echo a`'
  65. ADDRESS COMMAND 'setenv drawer `RequestFile RAM: TITLE="Select a drawer to extract the ' || ARCHIVENAME || ' to." DRAWERSONLY`'
  66.  
  67.  
  68.  
  69. ADDRESS COMMAND 'LZX x "' || ARCHIVE || '" `type ENV:drawer` >CON: <env:all'
  70. DELETE('ENV:drawer')
  71. DELETE('ENV:all')
  72. EXIT
  73. End
  74.  
  75.  
  76. IF FILETYPE = "DMS" then do
  77.  
  78. GETDBFORMFIELD "DMS_WriteTo"
  79. DMS_WRITETO = result
  80.  
  81. GETDBFORMFIELD "DMS_STARTSTOP"
  82. DMS_STARTSTOP = result
  83.  
  84. IF DMS_STARTSTOP = "0-79" | DMS_STARTSTOP = "" then do
  85. DMS_START = "0"
  86. DMS_END = "79"
  87. END 
  88.  
  89. IF DMS_STARTSTOP = "0-40" then do
  90. DMS_START = "0"
  91. DMS_END = "40"
  92. END 
  93.  
  94. IF DMS_STARTSTOP = "40-79" then do
  95. DMS_START = "40"
  96. DMS_END = "79"
  97. END 
  98.  
  99. IF exists(ARCHIVE) = 0 then do
  100. SAY "File is not on this CD"
  101. EXIT
  102. END
  103.  
  104. ADDRESS COMMAND 'DMS write "' || ARCHIVE || '" TO "' || DMS_WRITETO || '" LOW "' || DMS_START || '" HIGH "' || DMS_END || '" >CON:'
  105. EXIT
  106. END
  107.  
  108. IF FILETYPE = "RUN" then do
  109. ADDRESS COMMAND 'setenv drawer `RequestFile RAM: TITLE="Select a drawer to extract the ' || ARCHIVENAME || ' to." DRAWERSONLY`'
  110. IF exists('ENV:drawer') = 0 then do
  111. EXIT
  112. END
  113.  
  114. IF exists(ARCHIVE) = 0 then do
  115. SAY "File is not on this CD"
  116. EXIT
  117. END
  118.  
  119. ADDRESS COMMAND '"' || ARCHIVE || '" `type ENV:drawer` >CON:'
  120. DELETE('ENV:drawer')
  121. EXIT
  122. END
  123.  
  124. IF FILETYPE ~= "ARC" | FILETYPE ~= "LZH" | FILETYPE ~= "LHA" ~= "RUN" | FILETYPE ~= "DMS"  then do
  125. GETDBFORMFIELD "Viewer.Viewer"
  126. FILE_VIEWER = result
  127.  
  128. IF FILE_VIEWER = "" then do
  129.  
  130. FILE_VIEWER = "MultiView"
  131.  
  132. IF exists('ENV:AminetViewer') = 1 then do
  133. Open(input, 'ENV:AminetViewer', R)
  134. FILE_VIEWER = Readln(input)
  135. END
  136.  
  137. SETDBFORMFIELD Viewer.Viewer FILE_VIEWER
  138.  
  139. END
  140.  
  141. IF exists(VIEWERLOCATION) = 0 then do
  142. SAY "Viewer database cannot be found"
  143. EXIT
  144. END
  145.  
  146. OPEN VIEWERLOCATION
  147.    'SELECTALL WHERE "Viewer == \"' || FILE_VIEWER ||'\""',
  148.         'STEM VIEWER'
  149.  
  150. FILEVIEWER = VIEWER.ViewerPath
  151.  
  152. ADDRESS COMMAND 'setenv AminetViewer "'|| FILE_VIEWER ||'"'
  153. ADDRESS COMMAND 'COPY ENV:AminetViewer ENVARC:'
  154. ADDRESS COMMAND ' "' || FILEVIEWER || '" <NIL: >NIL: "' || ARCHIVE || '" '
  155. EXIT
  156. END
  157.  
  158. TESTFORFILES:
  159. IF exists('ENV:drawer') = 0 then do
  160. EXIT
  161. END
  162. IF exists(ARCHIVE) = 0 then do
  163. SAY "File is not on this CD"
  164. CALL EXITSCRIPT
  165. END
  166. RETURN
  167.  
  168. CLEANENV:
  169. IF exists('ENV:drawer') = 1 then do
  170. DELETE('ENV:drawer')
  171. END
  172. IF exists('ENV:all') = 1 then do
  173. DELETE('ENV:all')
  174. END
  175. RETURN
  176.  
  177. EXITSCRIPT:
  178. EXIT
  179. RETURN
  180.